#include<stdio.h>
#include "test1.h"
SideWalk* SideWalk_create()
{
	SideWalk* sidewalk=(SideWalk*)malloc(sizeof(SideWalk));
	sidewalk->front=0;
	sidewalk->rear=0;
	sidewalk->sum=0;
	return sidewalk;
}
void SideWalk_Free(SideWalk* sidewalk)
// 释放便道空间，以删除便道。
{
    free(sidewalk->sidewalkCar);
    free(sidewalk);
}
                                           
void SideWalk_MakeEmpty(SideWalk* sidewalk)
// 将便道置空。
{
    sidewalk->front=0;
    sidewalk->rear=0;
}

bool SideWalk_IsEmpty(SideWalk* sidewalk)
// 判断便道是否为空，为空返回true，否则返回false。
{
    if(sidewalk->front==sidewalk->rear)
        return true;
    else return false;
}

bool SideWalk_IsFull(SideWalk* sidewalk)
// 判断便道是否为满。为满返回true,否则返回false。
{
    if((sidewalk->rear+1)%sidewalk->max==sidewalk->front)
        return  true;
    else return false;
}

int SideWalk_Length(SideWalk* sidewalk)
// 便道长度。
{
    return (sidewalk->rear-sidewalk->front+sidewalk->max)%sidewalk->max;
}

bool SideWalk_In(SideWalk* sidewalk,Car* car)
// 将car进入便道。若进入失败(便道满)，则返回false，否则返回true。
{
    if(!SideWalk_IsFull(sidewalk))
    {
        strcpy(sidewalk->sidewalkCar[rear].license_plate,car->license_plate)
        rear++;
    }
    else return false;
}

bool SideWalk_Out(SideWalk* sidewalk,Car* car)
// 从便道出队一个元素，返回时car为出队的元素的值。若出队成功(便道不为空)，则返回true，否则(便道空)，返回false，此时car不会返回有效值。
{
    if(!SideWalk_IsEmpty(sidewalk))
    {
        car=sidewalk->sidewalkCar[front];
        sq->front=(sq->front+1)%sq->max;
        return true;
    }
    else return false;
}

bool SQ_Head(SeqQueue* sq, T& head)
// 获取队列头结点元素，返回时head保存头结点元素。
// 若获取失败(队列空)，则返回值为false，否则返回值为true。
{
    if ( SQ_IsEmpty(sq) ){
        return false;
    }
    else {
        head = sq->data[sq->front];
        return true;
    }
}

void SQ_Print(SeqQueue* sq)
// 依次打印出队列中的每个元素。
{
    int i=sq->front;
    if (SQ_IsEmpty(sq)) {
        printf("queue is emtpy");
        return;
    }
    for (i=sq->front; i!=sq->rear; i=(i+1)%sq->max) {
        printf("%d  ", sq->data[i]);
    }
    printf("\n");
}
